package com.qf.springbootdemo03.controller;

import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author q
 * @version V1.0
 * @date 2021/11/27
 **/
@RestController
@RequestMapping("/user")
public class UserController {

    //基于角色控制访问权限：是否有权限访问目标方法
    @Secured("ROLE_admin")
    @GetMapping("/add")
    public String add(){
        return "USER_ADD";
    }

    @GetMapping("/delete")
    public String delete(){
        return "USER_DELETE";
    }

    //> 基于API指定角色或权限控制是否有权限访问目标方法【方法之前控制】
    //> @PreAuthorize：注解适合进入方法前的权限验证， @PreAuthorize 可以将认证用户的 roles/permissions 参数传到方法中
    @GetMapping("/update")
    @PreAuthorize("hasAuthority('manager_p1')")
    public String update(){
        return "USER_UPDATE";
    }

}
